package wangxiaotao.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import wangxiaotao.bean.vo.MenuVO;
import wangxiaotao.bean.vo.TotalVO;
import wangxiaotao.entity.Role;
import wangxiaotao.entity.User;
import wangxiaotao.mapper.AdminMapper;
import wangxiaotao.service.AdminService;
import wangxiaotao.utils.JWTUtils;

import java.util.List;

@Slf4j
@Service
@RequiredArgsConstructor
public class AdminServiceImpl implements AdminService {
    private final AdminMapper adminMapper;

    /**
     * 获获取当前用户权限下的所有权限数据
     * @return
     */
    @Override
    public List<MenuVO> queryTypeByUserRole(String token) {
        int id = Integer.parseInt(JWTUtils.getClaimByName(token, "id"));
        return adminMapper.queryTypeByUserRole(id);
    }

    /**
     * 根据id获取角色
     * @param id
     * @return
     */
    @Override
    public List<Role> queryRolesByUserId(Integer id) {
        return adminMapper.queryRolesByUserId(id);
    }

    /**
     * 获取所有用户信息 包括角色信息
     * 模糊查询数据也在这个接口
     * @return
     */
    @Override
    public IPage<List<User>> queryAllUserInfoAndRole(IPage<User> page, String type, String data) {
        return adminMapper.queryAllUserInfoAndRole(page,type,data);
    }


    /**
     * 查询所有角色信息和对应的权限信息
     * @return
     */
    @Override
    public List<Role> queryAllRoleAndPermission(String type,String data) {
        return adminMapper.queryAllRoleAndPermission(type,data);
    }

    /**
     * 根据角色ids查询角色的所以权限
     * @param id
     * @return
     */
    @Override
    public List<String> queryAllResourceMarkByUserId(List<Integer> id) {
        return adminMapper.queryAllResourceMarkByUserId(id);
    }

    /**
     * 获取所有 订单数量 房间数量 用户数量 总金额
     * @return
     */
    @Override
    public TotalVO getTotalData() {
        return adminMapper.getTotalDate();
    }

}
